package com.shine.level.easy;

/**
 * 最长公共前缀
 * @author zhangshao
 * @date 2021/6/25 8:23 上午
 */
public class longestCommonPrefixTest {

    /**
     * 查找公共前缀
     * @param strs 判断的字符串数组
     * @return
     */
    public static String longestCommonPrefix(String[] strs){
        if(strs == null || strs.length ==0){
            return "";
        }
        if(strs.length ==1){
            return strs[0];
        }
        // 定义起始比较str
        String first = strs[0];
        // 定义最后一个相同的char的下标
        int max = strs[0].length() -1;

        // 2.根据最短数组的长度挨个比较元素, 如果发现不同,停止，返回
        for (int i = 1; i < strs.length; i++) {
            String curr = strs[i];
            //找出数组中长度最短的下表。
            max = Math.min(max,curr.length()-1);

            //对strs中的数组挨个判断下表是否不相等
            for(int j =0;j<=max;j++){
                if(curr.charAt(j) == first.charAt(j)){

                }else {
                    if( j == 0){

                        //一开始比较就不相等,返回空 eg:[flow,egg]
                        return "";
                    } else {
                        // eg[flower,flow] 此时j = 4,max = 3
                        max = j-1;
                        break;
                    }
                }
            }

        }
        return first.substring(0,max+1);
       
    }

    public static void main(String[] args) {
        String [] strs = {"flowers","flow","flight"};
        String s = longestCommonPrefix(strs);
        System.out.println(s);

    }
}
